りおんクロニクル


C# × SQLite × DataGridView|一覧表示・編集・削除まで徹底解説【2026年版】

Home【2026年版】C# / .NET入門と実践ガイド|基礎・業務アプリ開発・SQLite連携まで体系的に解説

C#でSQLiteを使う業務アプリでは、DataGridViewに一覧表示したいという需要が非常に多いです。 この記事では、SQLite → DataTable → DataGridView の流れを最速で構築し、 さらに編集・削除まで対応する実務レベルのコードをまとめています。

この記事でわかること
・SQLiteのデータをDataGridViewに表示する方法
・DataTableを使った一覧表示の最速コード
・編集内容をSQLiteに反映する方法
・削除ボタン付きのDataGridViewを作る方法
・業務アプリでのベストプラクティス

1. 必要なNuGetパッケージ

この2つだけでOK。

2. SQLite → DataTable → DataGridView の最速コード

まずは一覧表示の基本コード。

using Microsoft.Data.Sqlite;
using System.Data;

var dt = new DataTable();
var cs = "Data Source=sample.db";

using var con = new SqliteConnection(cs);
con.Open();

using var cmd = new SqliteCommand("SELECT * FROM Users", con);
using var reader = cmd.ExecuteReader();

dt.Load(reader);

// DataGridViewに表示
dataGridView1.DataSource = dt;

ポイント

3. DataGridViewに「削除ボタン」を追加する

削除ボタン列を追加するコード。

var deleteButton = new DataGridViewButtonColumn();
deleteButton.HeaderText = "削除";
deleteButton.Text = "削除";
deleteButton.UseColumnTextForButtonValue = true;

dataGridView1.Columns.Add(deleteButton);

4. 削除ボタンが押されたときの処理

CellContentClick イベントで削除処理を行う。

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    // 削除ボタン列か確認
    if (dataGridView1.Columns[e.ColumnIndex].HeaderText == "削除")
    {
        int id = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["Id"].Value);

        var cs = "Data Source=sample.db";
        using var con = new SqliteConnection(cs);
        con.Open();

        var sql = "DELETE FROM Users WHERE Id = @id";
        using var cmd = new SqliteCommand(sql, con);
        cmd.Parameters.AddWithValue("@id", id);
        cmd.ExecuteNonQuery();

        // 再読み込み
        LoadData();
    }
}

5. DataGridViewの編集内容をSQLiteに反映する

CellEndEdit イベントで更新処理を行う。

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    var row = dataGridView1.Rows[e.RowIndex];

    int id = Convert.ToInt32(row.Cells["Id"].Value);
    string name = row.Cells["Name"].Value.ToString();
    int age = Convert.ToInt32(row.Cells["Age"].Value);

    var cs = "Data Source=sample.db";
    using var con = new SqliteConnection(cs);
    con.Open();

    var sql = "UPDATE Users SET Name = @name, Age = @age WHERE Id = @id";
    using var cmd = new SqliteCommand(sql, con);

    cmd.Parameters.AddWithValue("@name", name);
    cmd.Parameters.AddWithValue("@age", age);
    cmd.Parameters.AddWithValue("@id", id);

    cmd.ExecuteNonQuery();
}

ポイント

6. 一覧を再読み込みするメソッド(LoadData)

削除後・更新後に呼び出す。

private void LoadData()
{
    var dt = new DataTable();
    var cs = "Data Source=sample.db";

    using var con = new SqliteConnection(cs);
    con.Open();

    using var cmd = new SqliteCommand("SELECT * FROM Users", con);
    using var reader = cmd.ExecuteReader();

    dt.Load(reader);
    dataGridView1.DataSource = dt;
}

7. 業務アプリでのベストプラクティス

まとめ:SQLite × DataGridView は業務アプリ最強の組み合わせ

C#で業務アプリを作るなら、 SQLite × DataGridView は最も実用的でコスパの良い組み合わせです。 この記事をベースに、あなたのアプリに組み込んでみてください。

前のページ  次のページ